Embodiments of the present invention relate to datacasting systems, apparatus, and methods, and more specifically, to coordinating server and client behavior for transporting a set of data objects over a unidirectional packet network under circumstances in which the set of data objects being transmitted changes over time. More specifically, embodiments of the present invention relate to systems, apparatus, and methods for transporting a data object from a server to one or more clients such that each client is able to conserve power and processing overhead by processing packets received from the network only from time to time, yet is guaranteed to receive all data objects intended for the client that are transmitted by the server. Thus, the present invention enables a datacasting system to effectively operate in a situation in which the recipients of the transported objects are intermittent listeners, that is client devices that are not listening continuously for transmission of the objects.
A number of protocols exist that are designed to facilitate the distribution of data objects (e.g., files, notifications, events, etc.) over a unidirectional network (e.g., IP multicast or broadcast, unicast UDP networks). For simplicity, such networks will be referred to generically in this description as “datacast networks,” and it will be understood that the term refers to the specific networks mentioned as well as similar data distribution networks. For packet-based technologies, the distribution of data objects includes the functions of object packetizing at the server (that is, breaking a data object into multiple, smaller data packets), transmission of the packets over the network, and reassembly of the data object from the packets at the client. The data objects are typically transmitted in the context of a logical session that is identified as part of the datacast protocol.
One usage of these standard protocols in the industry is as part of a session type usually referred to as a “file carousel,” in which a set of data objects provided by a server application is transmitted repeatedly by a server over a data transport network. In this situation, the server need not have knowledge (and typically would not) as to whether any particular client is receiving the data (i.e., “listening”). In this scenario, a client may begin listening to the datacast at some time after the datacast begins and, if it listens for a sufficient period of time, can accumulate the packets for each object, reassemble them and provide the objects to the client application. The packet protocols are designed so that different clients can join the datacast at arbitrary times and acquire the objects, provided the server is using a “file carousel” session or similar construct to continually retransmit the data objects for a sufficient period of time.
In some applications, the set of data objects changes over time, as an application (or the server platform, based on some policy or schedule) adds and removes objects from the datacast session. A client that has joined the session and is listening continuously (i.e., receiving most or all of the packets being sent for that session) will be able to detect the presence of the new objects. However, for some clients, continuous listening may not be feasible, or may be undesirable because it consumes excessive resources on the client. This is a particular concern for mobile datacast clients, where processing and battery resources are typically more limited than for other types of client devices.
However, a client that listens intermittently (i.e., non-continuously) must still be guaranteed to receive all data objects that have been transmitted that are intended for that client. This is a particularly important issue for datacast sessions in which objects published to a session are transmitted only for limited periods of time or in which object transmission priority is high initially but becomes lower later on.
With the existing techniques for datacast session management that are used in the industry, a client that listens intermittently to such sessions runs the risk of not receiving an object or of spending more receiver resources than is desirable in doing so. Moreover, even if objects are received, the client may not be able to determine whether it has received all of the transmitted objects that are intended to be part of a session.
What is desired are a system, apparatus, and associated methods for broadcasting data objects over a network to an intermittent listener, where such system, apparatus, and methods overcome the noted disadvantages of existing approaches.